package cn.xkai.exercise.b;

import java.util.HashSet;

/**
 * @description: 快乐数
 * 对于一个正整数，每一次将该数替换为它每个位置上的数字的平方和。
 * 然后重复这个过程直到这个数变为 1，也可能是 无限循环 但始终变不到 1。
 * 如果这个过程 结果为 1，那么这个数就是快乐数。
 * @author: kaixiang
 * @date: 2022/7/27
 **/
public class Solution98 {
    HashSet<Integer> visited = new HashSet<>();

    public boolean isHappy(int n) {
        int val = 0;
        while (true) {
            while (n > 0) {
                val += Math.pow(n - (n / 10) * 10, 2);
                n /= 10;
            }
            if (val == 1) {
                return true;
            }
            if (visited.contains(val)) {
                return false;
            }
            visited.add(val);
            n = val;
            val = 0;
        }
    }

    public static void main(String[] args) {
        int n = 19;
        Solution98 solution98 = new Solution98();
        System.out.println(solution98.isHappy(n));
    }
}
